home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / mus / play / AGMSTranscrbSnd1.lha / AGMSTranscribeSound.doc < prev   
Text File  |  1993-07-17  |  14KB  |  294 lines

  1.                           AGMSTranscribeSound
  2.  
  3. AGMSTranscribeSound is a Modula-2 program by Alexander G. M. Smith which
  4. plays arbitrarily large IFF and raw sound samples from disk.  It is actually
  5. a variation of AGMSPlaySound hacked up to be useful for transcribing
  6. dialogue from long sound samples.  You can use AGMSRecordSound (available
  7. separately) to make the dialogue sound samples, up to as many minutes long
  8. as you have space on your hard disk drive.
  9.  
  10. Sound Samples
  11.  
  12. Since AGMSTranscribeSound doesn't load the whole sample into memory, you can
  13. play samples longer than your memory size (up to 2 gigabytes).  It also
  14. leaves lots of memory free for other uses (such as running your text editor
  15. in parallel :-).  Unlike some other sound playing programs,
  16. AGMSTranscribeSound can play from floppy disk (not too useful when doing
  17. long transcriptions) without annoying pauses.  It achieves this performance
  18. by processing the IFF file headers and locating the sound data before
  19. starting to play.  It also opens all the files before playing so that no
  20. time is wasted during playback.
  21.  
  22.  
  23. Files
  24.  
  25. In addition to playing huge sound files, you can specify several samples to
  26. be played one after the other by listing the file names in the order you
  27. want to hear them (useful for combining phoneme samples to make spoken words
  28. or transcribing a series of recording sessions).  You can even have the
  29. parts on different disk devices.  Yes, this program supports floppies too!
  30. Note that floppies can only play back data at a rate of at most 10000 Hz
  31. (disable any disk caching programs, they waste CPU time when reading files
  32. larger than the cache).
  33.  
  34. The files to be played can be specified with wildcard patterns since this
  35. program uses the ARP library.  You can even specify the ALL keyword to
  36. recursively play all the files in all directories (note that since all files
  37. stay open until the program has finished, you may run out of fast memory if
  38. you have lots of files, not to mention the memory used for storing the full
  39. path name of the files!).  I've found and fixed the bug that caused memory
  40. trashing with ALL, apparently ARP expects an undocumented parameter to the
  41. FindFirst function when it is used recursively.  It was documented in 1987
  42. and was then taken out from the documentation.  Unfortunately, they kept on
  43. using it in arp.library version 39.1.  Hence the trashing problem.
  44.  
  45. How do you get those big sound files?  Either use a sound digitizer and an
  46. Amiga with lots of memory or use AGMSRecordSound.  AGMSRecordSound
  47. multitasks while it records arbitrarily long sounds directly to hard disk.
  48.  
  49.  
  50. Help
  51.  
  52. Most of the arguments to the program are obvious.  Just type a ? as the
  53. argument to get the standard ARP / AmigaDOS command template.  A second ?
  54. typed at the template prompt will print the program credits (now in AmigaDOS
  55. 2.0 compatible ANSI text).  The Verbose option also explains in more detail
  56. what the current settings are.  Ok, maybe they aren't obvious.  I'll
  57. describe the parameters in detail near the end of this message.
  58.  
  59.  
  60. Stolen Channels
  61.  
  62. The program supports audio priorities and recovers gracefully from stolen
  63. audio channels (waits until a channel is free or the user types control-C).
  64. In fact, if you are playing more than one sample, it will backtrack over
  65. multiple files to the one which was being played when the sound channel was
  66. stolen (one of the advantages to keeping all the files open until the
  67. program ends).  By the way, I've set it up to give preference for using the
  68. right hand sound channels before the left hand ones (sorry, I haven't had
  69. time to do Stereo, have a look at several other newer player programs
  70. (OmniPlay, DSound, etc) which do).
  71.  
  72.  
  73. Bug Fixes and New Features
  74.  
  75. I've found a bug in the M2Sprint IFFR.mod module for reading IFF files
  76. containing CAT objects.  Fortunately, M2Sprint includes the source code for
  77. the libraries so I was able to fix it in the December 27 1990 version.  I
  78. like that.  The problem comes from not using the listContext that was
  79. carefully set up to read the CAT.  Instead, they use the clientContext
  80. parameter to get the address of the procedure to call.  For CAT objects,
  81. clientContext is nil so some random memory address gets called.  Where did I
  82. find it?  AmigaVision uses CAT objects for containing the elements of your
  83. program.  Now if someone out there has IFF files with LIST or PROP objects,
  84. I'd appreciate a copy for testing...  Never mind, AGMSMakeFilm generates
  85. that kind of file.  By the way, if you want to do video off a hard disk with
  86. a stereo sound track, try out the AGMS*Film series of programs.
  87.  
  88. Also fixed (a feature really :-) is the file closing algorithm.  Files that
  89. were examined but have no sounds are now closed after examination rather
  90. than at the end of the program.  The memory used for their path names is
  91. also freed at this time.  This should make it easier to play all the sounds
  92. on your hard disk without running out of memory.
  93.  
  94. The NoWait option was added in the September 6, 1992 version after James
  95. Atwill requested it.
  96.  
  97. Faster disk access (got rid of some unnecessary seeks - really huge sound
  98. files will be examined much more quickly), 2.0 compatible ANSI text and
  99. swapping of control-E and control-F were added in the June 13, 1993 version.
  100.  
  101. Jamie Hellstrom requested a version for doing transcriptions in June 1993.
  102. The result is a variation of AGMSPlaySound called AGMSTranscribeSound.  The
  103. control keys got rearranged yet again to handle transcription functions.  I
  104. also found the AmigaDOS 2.0 lockup bug, AbortIO sometimes hangs!  You tell
  105. it to abort an audio write request and it just sits there.  Fortunately,
  106. stealing the channel will wake it up (run another program that steals
  107. channels, like most mod players).  I've worked around it by doing a
  108. CMD_FLUSH before doing any AbortIOs.
  109.  
  110.  
  111. Feedback
  112.  
  113. If you have any feature requests or find any bugs, please send me a message.
  114. I'm on several of the Ottawa BBX's (a BBS written by SteveX) and my
  115. commercial info service names are listed in the program's second help
  116. message (agmsmith@BIX.com, 71330.3173@CompuServe.com).
  117.  
  118.  
  119. Distribution
  120.  
  121. AGMSTranscribeSound is FreeWare.  Copyright (c) 1993 by Alexander G. M.
  122. Smith.  That means that you can use it freely, can't blame me for anything
  123. that goes wrong (there are probably a few bugs left), can't claim that you
  124. wrote it, and you shouldn't expect more from it than you paid me for it.
  125.  
  126.  
  127. Files/...
  128.  
  129. This argument to the program is a list of file names.  The files will be
  130. played in the order listed.  Each name can include wildcards (standard Amiga
  131. plus ARP style), if it selects more than one file, that group of files will
  132. be played in alphabetical order.  If you want to repeat a sound sample, just
  133. specify its name several times.
  134.  
  135.  
  136. Buffers/K
  137.  
  138. This parameter specifies the number of chip ram buffers to use for the
  139. sound.  You need at least 2.  While the system is playing one buffer, the
  140. others can be filled from disk.  The default is 2 (you don't really need
  141. more for transcription of long files - you aren't switching between lots of
  142. tiny files).  Try the verbose command switch to watch the buffers being
  143. filled and to see how changing the number of buffers affects performance.
  144.  
  145.  
  146. Size/K
  147.  
  148. This parameter sets the size of each chip ram sound buffer.  The default is
  149. 10000 bytes, the maximum is 131072 bytes.  So, if you have 5 buffers and
  150. each is 10000 bytes then you will use a total of 50000 bytes of chip ram.
  151. There is also a small amount of fast ram used for each buffer (message
  152. records and other small things).  For straight playback performance, use
  153. large buffers.  That is because DOS can read a large chunk of data faster
  154. than several small chunks (less overhead).  For transcription, a smaller
  155. value is better, to reduce the lag between your commands and the time you
  156. hear the result.  The default value of 10000 is good for transcription.
  157.  
  158.  
  159. Hz/K
  160.  
  161. This parameter controls the playback rate for raw sound samples (in other
  162. words, when AGMSTranscribeSound can't figure out the speed which the sample
  163. was recorded with).  It is in units of samples per second, or bytes per
  164. second since each sample is one byte long (compact disks have 2 byte samples
  165. and thus sound better).  The default is about 10000hz.
  166.  
  167. It is internally translated into a code value for the hardware.  Since the
  168. hardware doesn't have all that many code values, only a few frequencies are
  169. actually available.  A frequency near the one you specified will be picked.
  170.  
  171. Of course, with the variable playback speed added to do transcription (slow,
  172. fast and even backwards) the Hz setting is only accurate when playing at 4/4
  173. speed (use the verbose option to see what the play speed is, printed when
  174. you change the speed using the control keys).
  175.  
  176.  
  177. IFFLikeRaw/S
  178.  
  179. If this switch is specified, IFF sound samples will be treated a bit like
  180. raw samples.  The IFF header information about the playback frequency and
  181. volume level will be ignored; the default Hz and Volume parameters will be
  182. used instead.  This is useful if you want to hear an IFF file at lower or
  183. higher pitch than it was recorded with.  Also, the full chunk size will be
  184. used instead of the size specified in the IFF sound parameters for one shot
  185. sounds.  Unfortunately, it still doesn't help play back mangled IFF files
  186. (you will have to mangle the first few bytes so that it isn't recognized as
  187. IFF).
  188.  
  189.  
  190. Volume/K
  191.  
  192. This specifies the volume level of the playback.  0 means quiet, 64 is loud.
  193. IFF files contain their own volume settings which override this parameter.
  194.  
  195.  
  196. Verbose/S
  197.  
  198. When this command switch is used, lots of interesting messages will be
  199. displayed.  When examining IFF files, the structure and contents will be
  200. shown (even for non-sound files like pictures - try it on a picture to see
  201. what I mean).  All the parameter settings will be shown.  The parsing of
  202. your wildcards will be shown.  And during playback, the program will
  203. describe what it is doing (useful for seeing if your buffer settings are
  204. good).  It also displays the speed and control key commands used during
  205. transcription.
  206.  
  207.  
  208. Priority/K
  209.  
  210. No, this is not the task priority.  This is the priority that
  211. AGMSTranscribeSound uses when it is fighting with another program for
  212. control of an audio channel.  Larger positive values give more priority.
  213. Some programs (like the Sonix player) grab the channels with priority 127
  214. (the maximum).  With that high a priority, no other program can take over
  215. the channel (other users with priority 127 have to wait).  The default value
  216. is 90, good for foreground dialogue.
  217.  
  218. When a higher priority request comes in, the lower priority sound channel
  219. user looses the channel (the channel is "stolen").  AGMSTranscribeSound will
  220. detect the theft and put in a fresh request for the sound channel.  That
  221. request will stay pending until the high priority hog has finished making
  222. noise (oink, oink!), then AGMSTranscribeSound will be woken up by the Amiga
  223. OS and will resume playing from where it was cut off.
  224.  
  225.  
  226. All/S
  227.  
  228. This switch will turn on recursive directory searching.  Normally, when you
  229. specify a directory or one is encountered during wildcard checking, the
  230. directory will be skipped.  When ALL is used, the directory contents will be
  231. examined for sound files.
  232.  
  233.  
  234. NoRaw/S
  235.  
  236. This one will disable the playing of raw (non-IFF) files.  Useful when you
  237. use wildcards to play a bunch of files and you only want to hear the ones
  238. with IFF sounds in them.
  239.  
  240.  
  241. NoWait/S
  242.  
  243. The last switch!  Normally AGMSTranscribeSound will wait for an audio
  244. channel to become free before playing.  If NoWait is specified,
  245. AGMSTranscribeSound will terminate if there are no audio channels free.
  246. This means that you won't hear (or see, unless Verbose is on) anything if a
  247. higher priority sound is playing in all channels.  Similarly, if the channel
  248. being used gets stolen, AGMSTranscribeSound will try to find another one,
  249. and if it can't it will exit rather than waiting for another one.  Added on
  250. September 6, 1992 to satisfy James Atwill's wish for a Cron cuckoo clock
  251. that didn't collect up cuckoos while Experiment-IV was playing SoundTracker
  252. modules.
  253.  
  254.  
  255. Control-C & Transcription Modes
  256.  
  257. Control-C will abort the program as soon as it has finished whatever it is
  258. doing.
  259.  
  260. Control-E can be used during the file examining stage to start playing sound
  261. samples (stops the file examining activity).
  262.  
  263. Control-D cycles between transcription modes.  The first mode is speed
  264. mode (the default).  In speed mode control-E slows down the playback by
  265. one quarter of the full speed every time you press it.  You can slow down
  266. the sound to a complete stop.  If you slow it down even more, it will start
  267. playing backwards (nifty, eh?).  Control-F makes the sound go faster in
  268. speed mode, doing the opposite of control-E.  Note that the Amiga hardware
  269. only lets you play sounds up to 28kHz.  If your sound sample was originally
  270. recorded at 14kHz, you will only be able to double the speed before you hit
  271. the limit (speed 8/4, four control-F's away from the default).  So, if you
  272. want to play sounds at high multiples of their normal speed, you need to
  273. record them at a low sampling rate.
  274.  
  275. The other transcription mode is bookmark mode.  In this mode,
  276. control-E sets the bookmark to mark the currently loading sound sample
  277. buffer.  Control-F alternately stops the sound and restarts it from the
  278. bookmark position.
  279.  
  280. A typical use would be to record a conversation of some sort with
  281. AGMSRecordSound.  Then use AGMSTranscribeSound and your favorite text editor
  282. to write down the words.  Play the sound file and hit control-E when you
  283. hear the start of the section you want to transcribe.  Then use control-F to
  284. replay it while you write it down in your word processor.  Repeat that
  285. procedure until you have finished or your fingers hurt :-).
  286.  
  287. Hopefully the authors of other sound players will be able to do a better job
  288. of a transcription program (perhaps using a graphical user interface or a
  289. joystick interface (foot controlled switch?)).  I've just whipped up this
  290. one day hack to give Jamie something to use while the rest of you coders
  291. make a deluxe version (I'm busy with AGMSVirtualFileSystem right now).
  292.  
  293. - Alex
  294.